{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generating intra-day trading signals"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports & Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-08T13:07:34.258072Z",
     "start_time": "2020-05-08T13:07:33.409307Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/stefan/.pyenv/versions/miniconda3-latest/envs/ml4t/lib/python3.7/site-packages/pandas_datareader/compat/__init__.py:7: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
      "  from pandas.util.testing import assert_frame_equal\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import sys, os\n",
    "from time import time\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from scipy.stats import spearmanr\n",
    "import lightgbm as lgb\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import FuncFormatter\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-08T13:07:34.263270Z",
     "start_time": "2020-05-08T13:07:34.259471Z"
    }
   },
   "outputs": [],
   "source": [
    "sys.path.insert(1, os.path.join(sys.path[0], '..'))\n",
    "from utils import format_time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-08T13:07:34.277747Z",
     "start_time": "2020-05-08T13:07:34.264763Z"
    }
   },
   "outputs": [],
   "source": [
    "sns.set_style('whitegrid')\n",
    "idx = pd.IndexSlice"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Model Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:55:39.183326Z",
     "start_time": "2020-05-06T22:55:29.217367Z"
    }
   },
   "outputs": [],
   "source": [
    "data = pd.read_hdf('hf_data.h5', 'model_data')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:28.905862Z",
     "start_time": "2020-05-06T22:55:39.184367Z"
    }
   },
   "outputs": [],
   "source": [
    "dates = data.index.get_level_values('date_time').date\n",
    "for i in range(1, 11):\n",
    "    data[f'ret{i}min'] = data.groupby(['ticker', dates])[f'ret{i}min'].shift()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:31.368777Z",
     "start_time": "2020-05-06T22:56:28.906930Z"
    }
   },
   "outputs": [],
   "source": [
    "data = data.dropna(subset=['fwd1min'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:33.547934Z",
     "start_time": "2020-05-06T22:56:31.369738Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 47691042 entries, ('AAL', Timestamp('2014-12-22 09:30:00')) to ('YHOO', Timestamp('2017-06-16 15:59:00'))\n",
      "Data columns (total 21 columns):\n",
      " #   Column          Non-Null Count     Dtype  \n",
      "---  ------          --------------     -----  \n",
      " 0   minute          47691042 non-null  int64  \n",
      " 1   ret1min         45195496 non-null  float64\n",
      " 2   ret2min         45055629 non-null  float64\n",
      " 3   ret3min         44933477 non-null  float64\n",
      " 4   ret4min         44810314 non-null  float64\n",
      " 5   ret5min         44684180 non-null  float64\n",
      " 6   ret6min         44554887 non-null  float64\n",
      " 7   ret7min         44428726 non-null  float64\n",
      " 8   ret8min         44308529 non-null  float64\n",
      " 9   ret9min         44181609 non-null  float64\n",
      " 10  ret10min        44056812 non-null  float64\n",
      " 11  fwd1min         47691042 non-null  float64\n",
      " 12  price           47691042 non-null  float64\n",
      " 13  rup             46587774 non-null  float64\n",
      " 14  rdown           46554610 non-null  float64\n",
      " 15  BOP             47690893 non-null  float64\n",
      " 16  CCI             47688959 non-null  float64\n",
      " 17  MFI             47688806 non-null  float64\n",
      " 18  STOCHRSI        47686528 non-null  float64\n",
      " 19  STOCH           47687960 non-null  float64\n",
      " 20  trades_bid_ask  46363775 non-null  float64\n",
      "dtypes: float64(20), int64(1)\n",
      "memory usage: 7.7+ GB\n"
     ]
    }
   ],
   "source": [
    "data.info(null_counts=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:42.742272Z",
     "start_time": "2020-05-06T22:56:33.548948Z"
    }
   },
   "outputs": [],
   "source": [
    "data.to_hdf('hf_data.h5', 'model_data')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:47.020505Z",
     "start_time": "2020-05-06T22:56:47.008926Z"
    }
   },
   "outputs": [],
   "source": [
    "class MultipleTimeSeriesCV:\n",
    "    \"\"\"Generates tuples of train_idx, test_idx pairs\n",
    "    Assumes the MultiIndex contains levels 'symbol' and 'date'\n",
    "    purges overlapping outcomes\"\"\"\n",
    "\n",
    "    def __init__(self,\n",
    "                 n_splits=3,\n",
    "                 train_period_length=126,\n",
    "                 test_period_length=21,\n",
    "                 lookahead=None,\n",
    "                 date_idx='date',\n",
    "                 shuffle=False):\n",
    "        self.n_splits = n_splits\n",
    "        self.lookahead = lookahead\n",
    "        self.test_length = test_period_length\n",
    "        self.train_length = train_period_length\n",
    "        self.shuffle = shuffle\n",
    "        self.date_idx = date_idx\n",
    "\n",
    "    def split(self, X, y=None, groups=None):\n",
    "        unique_dates = X.index.get_level_values(self.date_idx).unique()\n",
    "        days = sorted(unique_dates, reverse=True)\n",
    "        split_idx = []\n",
    "        for i in range(self.n_splits):\n",
    "            test_end_idx = i * self.test_length\n",
    "            test_start_idx = test_end_idx + self.test_length\n",
    "            train_end_idx = test_start_idx + self.lookahead - 1\n",
    "            train_start_idx = train_end_idx + self.train_length + self.lookahead - 1\n",
    "            split_idx.append([train_start_idx, train_end_idx,\n",
    "                              test_start_idx, test_end_idx])\n",
    "\n",
    "        dates = X.reset_index()[[self.date_idx]]\n",
    "        for train_start, train_end, test_start, test_end in split_idx:\n",
    "\n",
    "            train_idx = dates[(dates[self.date_idx] > days[train_start])\n",
    "                              & (dates[self.date_idx] <= days[train_end])].index\n",
    "            test_idx = dates[(dates[self.date_idx] > days[test_start])\n",
    "                             & (dates[self.date_idx] <= days[test_end])].index\n",
    "            if self.shuffle:\n",
    "                np.random.shuffle(list(train_idx))\n",
    "            yield train_idx.to_numpy(), test_idx.to_numpy()\n",
    "\n",
    "    def get_n_splits(self, X, y, groups=None):\n",
    "        return self.n_splits\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:47.179693Z",
     "start_time": "2020-05-06T22:56:47.173716Z"
    }
   },
   "outputs": [],
   "source": [
    "def get_fi(model):\n",
    "    fi = model.feature_importance(importance_type='gain')\n",
    "    return (pd.Series(fi / fi.sum(),\n",
    "                      index=model.feature_name()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Categorical Variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:53.789985Z",
     "start_time": "2020-05-06T22:56:51.881539Z"
    }
   },
   "outputs": [],
   "source": [
    "data['stock_id'] = pd.factorize(data.index.get_level_values('ticker'), sort=True)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:53.792532Z",
     "start_time": "2020-05-06T22:56:53.790883Z"
    }
   },
   "outputs": [],
   "source": [
    "categoricals = ['minute', 'stock_id']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Custom Metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:56.997707Z",
     "start_time": "2020-05-06T22:56:56.995470Z"
    }
   },
   "outputs": [],
   "source": [
    "def ic_lgbm(preds, train_data):\n",
    "    \"\"\"Custom IC eval metric for lightgbm\"\"\"\n",
    "    is_higher_better = True\n",
    "    return 'ic', spearmanr(preds, train_data.get_label())[0], is_higher_better"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:57.692556Z",
     "start_time": "2020-05-06T22:56:57.146376Z"
    }
   },
   "outputs": [],
   "source": [
    "label = sorted(data.filter(like='fwd').columns)\n",
    "features = data.columns.difference(label).tolist()\n",
    "label = label[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:56:57.695439Z",
     "start_time": "2020-05-06T22:56:57.693568Z"
    }
   },
   "outputs": [],
   "source": [
    "params = dict(boosting='gbdt',\n",
    "              objective='regression',\n",
    "              metric='None',\n",
    "              verbose=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:57:00.979485Z",
     "start_time": "2020-05-06T22:57:00.973346Z"
    }
   },
   "outputs": [],
   "source": [
    "num_boost_round = 250"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:57:01.550700Z",
     "start_time": "2020-05-06T22:57:01.547303Z"
    }
   },
   "outputs": [],
   "source": [
    "DAY = 390   # minuts; 6.5 hrs (9:30 - 15:59)\n",
    "MONTH = 21  # trading days"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:57:01.986188Z",
     "start_time": "2020-05-06T22:57:01.983234Z"
    }
   },
   "outputs": [],
   "source": [
    "n_splits = 24\n",
    "\n",
    "cv = MultipleTimeSeriesCV(n_splits=n_splits,\n",
    "                          lookahead=1,\n",
    "                          test_period_length=MONTH * DAY,\n",
    "                          train_period_length=12 * MONTH * DAY,\n",
    "                          date_idx='date_time')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:57:04.459365Z",
     "start_time": "2020-05-06T22:57:04.455360Z"
    }
   },
   "outputs": [],
   "source": [
    "store='hf_model.h5'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T15:20:17.510334Z",
     "start_time": "2020-05-07T15:20:17.458713Z"
    }
   },
   "outputs": [],
   "source": [
    "for i, (train_idx, test_idx) in enumerate(cv.split(X=data)):\n",
    "    train_dates = data.iloc[train_idx].index.unique('date_time')\n",
    "    test_dates = data.iloc[test_idx].index.unique('date_time')\n",
    "    print(train_dates.min(), train_dates.max(), test_dates.min(), test_dates.max())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-06T22:57:07.088003Z",
     "start_time": "2020-05-06T22:57:05.896818Z"
    }
   },
   "outputs": [],
   "source": [
    "lgb_data = lgb.Dataset(data=data.drop(label, axis=1),\n",
    "                       label=data[label],\n",
    "                       categorical_feature=categoricals,\n",
    "                       free_raw_data=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T00:21:39.662849Z",
     "start_time": "2020-05-07T00:21:39.661067Z"
    }
   },
   "outputs": [],
   "source": [
    "cv_preds = [cv_preds]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T05:32:28.540573Z",
     "start_time": "2020-05-07T00:21:48.507587Z"
    },
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "T = 0\n",
    "cv_preds = []\n",
    "for i, (train_idx, test_idx) in enumerate(cv.split(X=data)):\n",
    "    start = time()\n",
    "    if i < 5: continue\n",
    "    t = time() - start\n",
    "    lgb_train = lgb_data.subset(train_idx.tolist()).construct()\n",
    "    lgb_test = lgb_data.subset(test_idx.tolist()).construct()\n",
    "    model = lgb.train(params=params,\n",
    "                      train_set=lgb_train,\n",
    "                      valid_sets=[lgb_train, lgb_test],\n",
    "                      feval=ic_lgbm,\n",
    "                      num_boost_round=num_boost_round,\n",
    "                      early_stopping_rounds=50,\n",
    "                      verbose_eval=50)\n",
    "    if i == 0:\n",
    "        fi = get_fi(model).to_frame()\n",
    "    else:\n",
    "        fi[i] = get_fi(model)\n",
    "    print(fi[i].nlargest(5))\n",
    "\n",
    "    test_set = data.iloc[test_idx, :]\n",
    "    X_test = test_set.loc[:, model.feature_name()]\n",
    "    y_test = test_set.loc[:, label]\n",
    "    y_pred = model.predict(X_test)\n",
    "    \n",
    "    cv_preds.append(y_test\n",
    "                    .to_frame('y_test')\n",
    "                    .assign(y_pred=y_pred).assign(i=i))\n",
    "    \n",
    "cv_preds = pd.concat(cv_preds)\n",
    "\n",
    "ic_by_day.to_hdf(store, 'daily_ic')\n",
    "fi.to_hdf(store, 'fi')\n",
    "cv_preds.to_hdf(store, 'predictions')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Signal Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T00:04:10.244723Z",
     "start_time": "2020-05-07T00:04:10.165510Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "MultiIndex: 3227082 entries, ('AAL', Timestamp('2017-11-30 09:30:00')) to ('XRAY', Timestamp('2017-09-29 15:19:00'))\n",
      "Data columns (total 3 columns):\n",
      " #   Column  Non-Null Count    Dtype  \n",
      "---  ------  --------------    -----  \n",
      " 0   y_test  3227082 non-null  float64\n",
      " 1   y_pred  3227082 non-null  float64\n",
      " 2   i       3227082 non-null  int64  \n",
      "dtypes: float64(2), int64(1)\n",
      "memory usage: 83.3+ MB\n"
     ]
    }
   ],
   "source": [
    "cv_preds.info(null_counts=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Information Coefficient"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T12:51:44.257363Z",
     "start_time": "2020-05-07T12:51:28.306108Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      " 1.90% |  1.98% |  1.91%\n"
     ]
    }
   ],
   "source": [
    "by_day = cv_preds.groupby(cv_preds.index.get_level_values('date_time').date)\n",
    "ic_by_day = by_day.apply(lambda x: spearmanr(x.y_test, x.y_pred)[0])\n",
    "\n",
    "daily_ic_mean = ic_by_day.mean()\n",
    "daily_ic_median = ic_by_day.median()\n",
    "\n",
    "ic = spearmanr(cv_preds.y_test, cv_preds.y_pred)[0]\n",
    "\n",
    "print(f'\\n{ic:6.2%} | {daily_ic_mean: 6.2%} | {daily_ic_median: 6.2%}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compute signal quantiles"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dates = cv_preds.index.get_level_values('date_time').date"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T11:34:56.084203Z",
     "start_time": "2020-05-07T11:33:45.910879Z"
    }
   },
   "outputs": [],
   "source": [
    "cv_preds['decile'] = (cv_preds.groupby(dates, group_keys=False)\n",
    "                      .apply(lambda x: pd.qcut(x.y_pred, q=10, labels=list(range(1, 11)))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T11:35:16.119245Z",
     "start_time": "2020-05-07T11:34:56.085156Z"
    }
   },
   "outputs": [],
   "source": [
    "cv_preds['quintile'] = (cv_preds.groupby(dates, group_keys=False)\n",
    "                      .apply(lambda x: pd.qcut(x.y_pred, q=5, labels=list(range(1, 6)))))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Return Statistics by Quantile"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T12:34:15.629019Z",
     "start_time": "2020-05-07T12:33:32.814660Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>quintile</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3789631.0</td>\n",
       "      <td>-1.393970e-05</td>\n",
       "      <td>0.000849</td>\n",
       "      <td>-0.062436</td>\n",
       "      <td>-0.000319</td>\n",
       "      <td>-0.000005</td>\n",
       "      <td>0.000293</td>\n",
       "      <td>0.069966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3789344.0</td>\n",
       "      <td>-3.759795e-06</td>\n",
       "      <td>0.000549</td>\n",
       "      <td>-0.045871</td>\n",
       "      <td>-0.000245</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000236</td>\n",
       "      <td>0.032385</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3789345.0</td>\n",
       "      <td>-5.394314e-07</td>\n",
       "      <td>0.000523</td>\n",
       "      <td>-0.034013</td>\n",
       "      <td>-0.000234</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000231</td>\n",
       "      <td>0.031783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3789344.0</td>\n",
       "      <td>4.271292e-06</td>\n",
       "      <td>0.000545</td>\n",
       "      <td>-0.032158</td>\n",
       "      <td>-0.000235</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000242</td>\n",
       "      <td>0.067023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>3789536.0</td>\n",
       "      <td>1.758100e-05</td>\n",
       "      <td>0.000801</td>\n",
       "      <td>-0.074215</td>\n",
       "      <td>-0.000280</td>\n",
       "      <td>0.000009</td>\n",
       "      <td>0.000311</td>\n",
       "      <td>0.045520</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              count          mean       std       min       25%       50%  \\\n",
       "quintile                                                                    \n",
       "1         3789631.0 -1.393970e-05  0.000849 -0.062436 -0.000319 -0.000005   \n",
       "2         3789344.0 -3.759795e-06  0.000549 -0.045871 -0.000245  0.000000   \n",
       "3         3789345.0 -5.394314e-07  0.000523 -0.034013 -0.000234  0.000000   \n",
       "4         3789344.0  4.271292e-06  0.000545 -0.032158 -0.000235  0.000000   \n",
       "5         3789536.0  1.758100e-05  0.000801 -0.074215 -0.000280  0.000009   \n",
       "\n",
       "               75%       max  \n",
       "quintile                      \n",
       "1         0.000293  0.069966  \n",
       "2         0.000236  0.032385  \n",
       "3         0.000231  0.031783  \n",
       "4         0.000242  0.067023  \n",
       "5         0.000311  0.045520  "
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ret_stats_5 = cv_preds.groupby('quintile').y_test.describe()\n",
    "ret_stats_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-07T12:34:15.639158Z",
     "start_time": "2020-05-07T12:34:15.630362Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>decile</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1894940.0</td>\n",
       "      <td>-1.995343e-05</td>\n",
       "      <td>0.001027</td>\n",
       "      <td>-0.062436</td>\n",
       "      <td>-0.000380</td>\n",
       "      <td>-9.469758e-06</td>\n",
       "      <td>0.000345</td>\n",
       "      <td>0.069966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1894691.0</td>\n",
       "      <td>-7.925179e-06</td>\n",
       "      <td>0.000621</td>\n",
       "      <td>-0.027180</td>\n",
       "      <td>-0.000270</td>\n",
       "      <td>-1.317809e-06</td>\n",
       "      <td>0.000253</td>\n",
       "      <td>0.067651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1894658.0</td>\n",
       "      <td>-4.578574e-06</td>\n",
       "      <td>0.000561</td>\n",
       "      <td>-0.045871</td>\n",
       "      <td>-0.000250</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000239</td>\n",
       "      <td>0.029765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1894686.0</td>\n",
       "      <td>-2.941027e-06</td>\n",
       "      <td>0.000536</td>\n",
       "      <td>-0.035570</td>\n",
       "      <td>-0.000240</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000233</td>\n",
       "      <td>0.032385</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1894741.0</td>\n",
       "      <td>-1.129222e-06</td>\n",
       "      <td>0.000524</td>\n",
       "      <td>-0.022760</td>\n",
       "      <td>-0.000235</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000231</td>\n",
       "      <td>0.031783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1894604.0</td>\n",
       "      <td>5.040185e-08</td>\n",
       "      <td>0.000522</td>\n",
       "      <td>-0.034013</td>\n",
       "      <td>-0.000233</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000232</td>\n",
       "      <td>0.031527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1894642.0</td>\n",
       "      <td>2.915731e-06</td>\n",
       "      <td>0.000535</td>\n",
       "      <td>-0.020600</td>\n",
       "      <td>-0.000233</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000238</td>\n",
       "      <td>0.067023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1894702.0</td>\n",
       "      <td>5.626810e-06</td>\n",
       "      <td>0.000555</td>\n",
       "      <td>-0.032158</td>\n",
       "      <td>-0.000237</td>\n",
       "      <td>9.249586e-07</td>\n",
       "      <td>0.000247</td>\n",
       "      <td>0.053167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1894649.0</td>\n",
       "      <td>9.261194e-06</td>\n",
       "      <td>0.000601</td>\n",
       "      <td>-0.025329</td>\n",
       "      <td>-0.000249</td>\n",
       "      <td>4.010937e-06</td>\n",
       "      <td>0.000265</td>\n",
       "      <td>0.036626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1894887.0</td>\n",
       "      <td>2.589977e-05</td>\n",
       "      <td>0.000961</td>\n",
       "      <td>-0.074215</td>\n",
       "      <td>-0.000320</td>\n",
       "      <td>1.621483e-05</td>\n",
       "      <td>0.000367</td>\n",
       "      <td>0.045520</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            count          mean       std       min       25%           50%  \\\n",
       "decile                                                                        \n",
       "1       1894940.0 -1.995343e-05  0.001027 -0.062436 -0.000380 -9.469758e-06   \n",
       "2       1894691.0 -7.925179e-06  0.000621 -0.027180 -0.000270 -1.317809e-06   \n",
       "3       1894658.0 -4.578574e-06  0.000561 -0.045871 -0.000250  0.000000e+00   \n",
       "4       1894686.0 -2.941027e-06  0.000536 -0.035570 -0.000240  0.000000e+00   \n",
       "5       1894741.0 -1.129222e-06  0.000524 -0.022760 -0.000235  0.000000e+00   \n",
       "6       1894604.0  5.040185e-08  0.000522 -0.034013 -0.000233  0.000000e+00   \n",
       "7       1894642.0  2.915731e-06  0.000535 -0.020600 -0.000233  0.000000e+00   \n",
       "8       1894702.0  5.626810e-06  0.000555 -0.032158 -0.000237  9.249586e-07   \n",
       "9       1894649.0  9.261194e-06  0.000601 -0.025329 -0.000249  4.010937e-06   \n",
       "10      1894887.0  2.589977e-05  0.000961 -0.074215 -0.000320  1.621483e-05   \n",
       "\n",
       "             75%       max  \n",
       "decile                      \n",
       "1       0.000345  0.069966  \n",
       "2       0.000253  0.067651  \n",
       "3       0.000239  0.029765  \n",
       "4       0.000233  0.032385  \n",
       "5       0.000231  0.031783  \n",
       "6       0.000232  0.031527  \n",
       "7       0.000238  0.067023  \n",
       "8       0.000247  0.053167  \n",
       "9       0.000265  0.036626  \n",
       "10      0.000367  0.045520  "
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ret_stats_10 = cv_preds.groupby('decile').y_test.describe()\n",
    "ret_stats_10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot Performance by Decile"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-08T13:07:56.280730Z",
     "start_time": "2020-05-08T13:07:54.716530Z"
    }
   },
   "outputs": [],
   "source": [
    "cv_preds= pd.read_hdf('hf_model.h5', 'predictions')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-08T13:07:58.650661Z",
     "start_time": "2020-05-08T13:07:57.040507Z"
    }
   },
   "outputs": [],
   "source": [
    "dates = cv_preds.index.get_level_values('date_time')\n",
    "min_ret_by_decile = cv_preds.groupby(['date_time', 'decile']).y_test.mean()\n",
    "cumulative_ret_by_decile = (min_ret_by_decile\n",
    "                            .unstack('decile')\n",
    "                            .add(1)\n",
    "                            .cumprod()\n",
    "                            .sub(1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-08T13:08:25.630781Z",
     "start_time": "2020-05-08T13:08:05.498647Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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TAzvvvsuX331FXq9nj/++INRo0bx5Zdf0r9/f+bPn5/vdpcuXWLkyJFs2bKFXr16MWHCBLy8vOjbty8bNmwA4MKFC5w7d44uXbrk2dbf359XX32Vp556im7duvHqq6+yadMm7rnnHvR6fZ51Z86cScOGDfnmm29YsGABhw8f9iyz2+1UqVKFtWvXsnDhQmbPno3NZmPPnj34+fmxbt06vvvuO1q0aHHDw+OaNGnCyZMnC93fO3fuZPPmzaxbt45t27YRGhrKypUr8y2vsHKEEEIU7dixYzRs2NBzsfqK4OBgunfvXqwybDYb69ev58UXXyQyMpIRI0awdetWQkJC+OKLL4ody/bt22ndujXr1q1j586dnmPvQw89RNeuXRk5ciSPPvqoZ/17772XnJwcT1K8bds2Onfu7DkuXjmf2bhxI7/88gtff/11vvV+/fXX9OnTh4cffpgOHTowc+ZMpk+fTqtWrXA6nYwbN47//Oc/bN68mZUrV/LJJ58QFRXF7Nmzgdwe6pCQkELblpCQwHPPPcd3331HcHAwsbGx3HfffWzcuJH//Oc/zJo1K9/trFYr9957L19++SXjx4/nxRdfxOFwMHToUNavXw9AdnY2u3btol+/fsXaz02bNiUpKYm0tDS+/PJLTp48yYYNG9iyZQudO3dmypQpAEyfPp169erx7bffsm7dOtavX8/58+fzLbOwcoQobTLEXdwy1qxZQ5cuXahSpQpVqlQhNDSU9evXM2DAAE8P+bZt2+jatSu+vr78+OOPTJ48GbVajY+PD/369ePEiRMlGtM999zjuYJfrVo1z9CyOnXqkJ6enu82V4Y9V69enaCgIDIyMqhdu/Y1610Zcm02m3nppZfQ6/V06NAByL2HOykpibFjx3rWV6lUnDhxwjOkrjhCQkKoVauW53PNmjVp1qwZAM2bNy/wRKVJkya0adMGgH79+jFt2jSysrIYNmwYjz32GC+99BLr1q1j4MCB+V4keOKJJxg0aBAHDx7k4MGDLF++nOXLl3uu8l/x448/emKoVq0aPXr0yLP8yr684447sNvtmM1mevToQe3atfn88885f/48v/766w3fc6ZSqTCZTIXu73379tGjRw9Pz8WVHoorF42uVlg5NWvWvKEYhRDidqJWq3G73TdVxsMPPwxA7dq1qVq1Kk2bNgVyj90ZGRnFLmfE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VssE80IIISqf/fv38/LLL7N///7yDuWm/fzzzzRu3JixY8cyZswYHnjgAY4dO0b79u0BuP/++/nll18wGAw4nU5sNht6vZ7Y2FgsFkueY70QQghRGZldLi7Z7CiKUib1ldkQ94ceeoi9e/cSERGBoijMmjWLr776CrPZzJAhQwgPD+fRRx9Fq9XSpEkTevfuXVahCSGEECVmxYoVxMTEYDab6dixY3mHc1PS0tK4ePEiH374IXFxcTz77LMoiuLpDfD29iYrKwsvLy+6du3Kyy+/zPPPP8+SJUsYM2YMM2fORK1WM378eLy8vAqspyznlLFarZV2/prKHHthKnO7KnPsxVWZ21iZYy9IZW7TzcTucDiwWCzXvZ3NZqNv37588803xVr/+PHj/Pjjj4wePZpu3brx7Y6dXHApaIAAt6vI7RVFyTfO/CaPK0iZJehqtZoZM2bk+a5Bgwae90OGDGHIkCFlFY4QQghRKsxmc57XyiwgIID69euj1+upX78+BoOBhIQEz/KcnBz8/PwAiIiIICIigsOHD1OnTh327dtHu3btANi2bRuDBw8usJ6ynFMmOjq60s5fU5ljL0xlbldljr24KnMbK3PsBanMbbqZ2KOjo/NMvlZcarXaM0K7OO666y7uuuuu3A8qFfHu3Lf1vYwYNEWP8P7nJHFX6HS6a9peUMIu48iFEEIIka+2bdvy008/oSgKiYmJWCwW7r77bg4cOADAnj17PEn4FStWrGDkyJFYrVY0Gg0qleqWuFghhBCi7LgVhW+TMhgUdYqPYi9f17Y5OTk8++yzPProo0ybNg2AEydOMHz4cIYPH84LL7xAVlYWbrebGTNmMHDgQPr06cOOHTs4cOAAL730Ei5FwaUoOBQFZ+x5nho5Is+2panMetCFEEIIUbl06dKFgwcPMnDgQBRFITIyktDQUN544w3ee+896tevT/fu3T3rb9++nS5dumAymejRowfjx49HrVYzf/78cmyFEEKIysLhVticmMYHFxKJMdvw0aj5KS2bLVWLn7Z+8cUXNG7cmJdeeokjR45w4MAB3njjDWbNmkXDhg3ZsGEDH3/8MS1atCAtLY2NGzeSlJTEypUradOxI1a3m1NmK4oCdYx6npk29ZptX3rppVLbB5KgCyGEEKJAEyZMuOa7lStX5rvuI4884nlfo0YN1q5dW2pxCSGE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ejUA8+fP56mnnuKdd95ROFHtlJeX88orr+Dq6qp0lKu6sO7OmTOHOXPmqOI13rx5Mzt27CApKYk5c+Zw5swZpSNd1T/+8Q/7axwXF8eUKVPw9PRUOla11q5dS0VFBfPnz+eJJ57gww8/VDrSVS1cuBA3NzcWLlzIlClTHPY97tL/G++88w7PPPMM8+bNw2q1quLD01vN/v37AduHwmoza9YslixZonSM606tfXKr9geAxWKhsLCQF198kdOnTysdp85WrlxJYmIiv/766y33Qahatxe4tbeZC250/0iBfomwsDA++ugjpWPUSv/+/Xn66aftPzs5OSmYpnb69Olj38k+deoUvr6+CieqnalTpzJixAj8/f2VjnJVe/fupbi4mMTEREaNGsXOnTuVjnRVf/zxB1FRUTzxxBM8+uij9OzZU+lItbZ7927S09MZPny40lFqFBERQWVlJRaLBbPZjLOzs9KRrio9PZ0ePXoA0LhxY4c96n/p/43U1FQ6dOgAQI8ePdiwYYNS0eqlbdu2MXbsWMrLy3FycsJqtSodqVY2btxIYmIi586do3v37krHua7U2Ce3cn9ceP21Wi05OTksXbqUZcuWqaJfLli1ahWzZ8/mpZde4umnn8ZsNisd6bpR4/YCt/Y2c7Gb0T9SoF+iX79+qthxBTAajbi7u2M2m3nqqad45plnlI5UK87OzkyaNIk33niDfv36KR3nqr777ju8vb1V82bj6urKmDFjmDVrFq+99hrPPfecw5/6lZOTw59//sn06dPtmdXyD+mzzz7jiSeeUDrGVbm5uXHy5EnuuusuXn75ZVVcxhMTE8Pq1auxWq3s3LmTjIwMhzyacOn/DavVikajAWzv0wUFBUpFq3cKCwv5+eefKSws5N///jeAat5Lvv76awYOHMjEiRNZt24df/zxh9KRrgu19smt2h+lpaUUFhbaf167di33338/a9eutR8VdFRlZWX2S8mcnJyIjo5m06ZNjB49mpdeeolvv/2WjIwMQB3r2JWodXuBW3ebudjN6h8p0FXu9OnTjBo1ikGDBnHvvfcqHafWpk6dyvLly3n55ZcpKipSOk6NlixZwoYNG0hISCAtLY1JkyaRmZmpdKxqRUREMHDgQDQaDREREZhMJofOC2AymejWrRs6nY7GjRuj1+s5d+6c0rGuKj8/n0OHDtGpUyel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\n",
      "text/plain": [
       "<Figure size 1008x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(figsize=(14, 4), ncols=2)\n",
    "\n",
    "sns.barplot(y='y_test', \n",
    "            x='decile', \n",
    "            data=cv_preds.assign(y_test=cv_preds.y_test.mul(10000)), \n",
    "            ax=axes[0])\n",
    "axes[0].set_title('Avg. 1-min Return by Signal Decile')\n",
    "axes[0].set_ylabel('Return (bps)')\n",
    "axes[0].set_xlabel('Decile')\n",
    "\n",
    "(min_ret_by_decile\n",
    " .unstack('decile')\n",
    " .add(1)\n",
    " .cumprod()\n",
    " .sub(1)\n",
    " .resample('D')\n",
    " .last()\n",
    " .dropna()\n",
    " .sort_index()\n",
    " .plot(ax=axes[1], title='Cumulative Return by Decile'))\n",
    "axes[1].yaxis.set_major_formatter(\n",
    "    FuncFormatter(lambda y, _: '{:.0%}'.format(y)))\n",
    "axes[1].set_xlabel('')\n",
    "axes[1].set_ylabel('Return')\n",
    "fig.tight_layout()\n",
    "fig.savefig('figures/hft_deciles', dpi=300)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
